package com.wiz.data.vo.to;


/**
 * 带数字域
 * @author Hakeny
 */
public class MessageIntegerFiled extends MessageFiled {

	@Override
	public byte[] toBytes() {
		int intValue = (int)value;
		byte[] bytes = new byte[4];  
	    // "&" 与（AND），对两个整型操作数中对应位执行布尔代数，两个位都为1时输出1，否则0。  
		bytes[0] = (byte) (0xff & intValue);  
	    // ">>"右移位，若为正数则高位补0，若为负数则高位补1  
	    bytes[1] = (byte) ((0xff00 & intValue) >> 8);  
	    bytes[2] = (byte) ((0xff0000 & intValue) >> 16);  
	    bytes[3] = (byte) ((0xff000000 & intValue) >> 24);  
		return bytes;
	}

	@Override
	protected Object clone() throws CloneNotSupportedException {
		MessageIntegerFiled filed = (MessageIntegerFiled) super.clone();
		filed.setType(this.type);
//		filed.setValue(this.value);
		filed.setNeedLength(this.needLength);
		return filed;
	}
	
	public static void main(String[] args) {
		int intValue = 111;
		byte[] bytes = new byte[4];  
	    // "&" 与（AND），对两个整型操作数中对应位执行布尔代数，两个位都为1时输出1，否则0。  
		bytes[0] = (byte) (0xff & intValue);  
	    // ">>"右移位，若为正数则高位补0，若为负数则高位补1  
	    bytes[1] = (byte) ((0xff00 & intValue) >> 8);  
	    bytes[2] = (byte) ((0xff0000 & intValue) >> 16);  
	    bytes[3] = (byte) ((0xff000000 & intValue) >> 24);  
	    
	    int number = bytes[0] & 0xFF;  
	    // "|="按位或赋值。  
	    number |= ((bytes[1] << 8) & 0xFF00);  
	    number |= ((bytes[2] << 16) & 0xFF0000);  
	    number |= ((bytes[3] << 24) & 0xFF000000);  
	    
	    System.out.println(number);
	}
}
